 | | CONDICIÓN |
“Toda proposición de la lógica es un modus ponens representado en signos” (Wittgenstein, Tractatus 6.1264)
“Puesto que es posible salir adelante con un solo medio de inferencia [el modus ponens], entonces es un precepto de claridad hacerlo así” (Frege)
“La lógica no tiene existencia independiente de las matemáticas” (Tobias Dantzig)
Condición Directa
Semántica
Considerar o no una cierta expresión x
en función de si existe otra expresión y
:
- Si la expresión
y
existe (es decir, si y≠θ
), entonces el resultado es x
.
- Si la expresión
y
no existe (es decir, si y=θ
), el resultado de la operación es la expresión nula (θ
).
La expresión y
se denomina “condición”. La expresión x
es la “acción” a realizar si se cumple dicha condición.
Sintaxis
(x ← y) // x si y
o bien
(y → x) // si y, entonces x
La regla nemotécnica es que el símbolo apunta a la acción.
Justificación
La condición es el elemento básico de la decisión, que nos permite considerar algo o no en función de una circunstancia específica (la condición).
Ejemplos
(a = 3)
((x + y) ← a) // ev. (x + y)
(x = 1)
(y = 2)
(a ← (x+y)) // ev. a
(b = θ)
((a b c) ← b) // ev. θ
(x = 1)
(y = 2)
((z = x+y) ← α) // ev. (z = 3)
(a = 2)
(b = 3)
(x ← a=b) // ev. θ
(x ← (a =' b)) // ev. x
(x ← (a ≠ b)) // ev. x
(x ← a>b) // ev. θ
(x ← a≥b) // ev. θ
(x ← a<b) // ev. x
(x ← a≤b) // ev. x
(a = 2)
(b = 2)
(x ← a≡b) // ev. x
(x ← (a ≡' b)) // ev. θ
x←{a b} // ev. {a b}
Observaciones
- No se utilizan como condición los valores lógicos (verdadero o falso). En su lugar, se utiliza el concepto de existencia, representado por las metaexpresiones
α
(existencia) y θ
(no existencia).
- Por motivos evidentes de economía computacional, en una expresión condicional primero se evalúa la condición, independientemente del orden físico de las expresiones condición y acción.
- En una expresión condicional hay simetría a ambos lados del operador (las dos expresiones pueden ser de cualquier tipo). Esto no ocurre con la condición de los lenguajes de programación tradicionales, que tiene que ser forzosamente una expresión lógica que se evalúe como verdadera o falsa.
- Una condición puede ser también una expresión de comparación aritmética, de sustitución o de equivalencia, así como sus contrarias, como aparecen en los ejemplos. En el caso de sustitución, estamos interrogando si se cumple o no dicha sustitución, por lo que dicha sustitución no se realiza. Lo mismo vale para el tema de la equivalencia.
- La implicación lógica se implementa mediante una expresión genérica. Por ejemplo:
〈( x=b ←' n>3 → x=a )〉
n=7 // automáticamente implica x=a
x // ev. a
n=1 // automáticamente implica x=b
x // ev. b
Axiomas
〈( (x ← y) ≡ (y → x) )〉 // por la definición
〈( (x ← θ) = θ )〉 // por la definición
〈( (x ← α) = x )〉
La expresión α
actuando como condición es una condición universal, y es la condición por defecto de toda expresión (es decir, si no se especifica ninguna condición).
〈( (x ← ()) = x )〉 // la secuencia vacía existe
〈( (x ← (y = y)) = x )〉
〈( (x ← (y =' y)) = θ )〉
〈( (x ← (y ≡ y)) = x )〉
〈( (x ← (y ≡' y)) = θ )〉
〈( (x ← x) = x )〉 // idempotencia
En efecto:
Si x≠θ
, (x←x)
ev. x
Si x=θ
, (x←x)
ev. θ
〈( ((x ← c1) ← c2) ≡ (x ← (c1 ← c2)) )〉 // asociatividad
En efecto, puesto que los posibles valores de c1
y c2
a considerar son, en definitiva, θ
y α
, tenemos:
〈( (θ ← x) = θ )〉
〈( ((x ← y) ← y) = (x ← y) )〉 // reducción
〈( (x = y) → ((z ← x) ≡ (z ← y)) )〉
〈( (x = y) → ((x ← z) ≡ (y ← z)) )〉
〈( (x ≡ y) → ((z ← x) ≡ (z ← y)) )〉
〈( (x ≡ y) → ((x ← z) ≡ (y ← z)) )〉
〈( (y → x ← z) ≡ (y → z → x) )〉
( {〈( x ← x≠x) )〉} = ∅ )
(no existe ninguna expresión distinta de sí misma)
( {〈( x ← x=x) )〉} = {Ω} )
(todas las expresiones son iguales a sí mismas)
Condiciones múltiples
Si tenemos dos condiciones, x
e y
, para especificar que se cumpla alguna de ellas:
(para que se obtenga z
basta con que x
ó y
existan)
Esta expresión es la análoga al “o” (OR) lógico de dos condiciones.
Si queremos que se cumplan las dos condiciones,
(para que se obtenga x
se tienen que cumplir y
y z
)
Esta expresión es la análoga al “y” (AND) lógico de dos condiciones.
Estas operaciones condicionales se puede generalizar a n
condiciones.
Condición Contraria (Derivada)
Semántica
No considerar la expresión x
si se cumple la condición y
, o (lo que es lo mismo) considerar la expresión x
si no se cumple la condición y
.
Sintaxis
(x ←' y) // x si no y
o bien
(y →' x) // si no y, entonces x
Definición
〈( (x ←' y) = ((y = θ) → x) )〉
En efecto:
Si y≠θ
, ev. θ
Si y=θ
, ev. x
Axiomas
〈( (x ←' x) = θ )〉
En efecto:
Si x ≠ θ
, (x ←' x)
ev. θ
Si x = θ
, (x ←' x)
ev. x
ev. θ
〈( (x ←' θ) = x )〉
〈( (θ ←' x) = θ )〉
〈( (x ←' α) = θ )〉
Expresión Condicional Completa (Derivada)
Semántica y Sintaxis
Una expresión condicional completa es la que incluye una condición y su contraria:
(x ← y →' z)
o bien
(z ←' y → x)
Ambas expresiones indican evaluar como x
si existe y
; en caso contrario, evaluar como z
.
La expresión condicional completa es análoga a la clásica If-Then-Else.
Definition
〈( (x ← y →' z) = ((x ← y) (z →' y)) )〉
Ejemplos
- La función
se codificaría así:
(y = (a ← x=1 →' b))
- La función
se codificaría así:
(y = ((a ← x=1 →' (b ← x=2 →' c))
en donde aparecen dos expresiones condicionales completas anidadas.
Axiomas
〈( (x → y) ≡ (θ ←' x → y) )〉
〈( (x ← c →' x) = x )〉
〈(x ← c →' (y ← c →' z)) = (x ← c →' z)〉
Anulación de expresión intermedia
〈( ((x ← c) y) ≡ ((x y) ← c →' y) )〉
〈( ((x ← c →' y) zx z) ← c →' (y z)) )〉
Equivalencia Condicional (Derivada)
Semántica
Dos expresiones, x
e y
, son equivalentes condicionalmente cuando se verifican, al mismo tiempo, x←y
y y←x
.
Sintáxis
Definición
〈( (x ↔ y) =: {(x ← y) (y ← x)} )〉
Ejemplos
(a+b = c) ↔ (c-a = b)
(a-b = c) ↔ (c+b = a)
Axiomas
〈( (x ↔ x) = x )〉
〈( (x ↔ y) → (x → y) )〉 // por la definición
〈( (x ↔ y) → (y → x) )〉 // por la definición
〈( (x ↔ y) ≡ (y ↔ x) )〉 // conmutatatividad (por la definición)
〈( (x ↔ y) → ((z ← x) ≡ (z ← y)) )〉
Si dos expresiones son equivalentes condicionalmente, entonces son intercambiables como condición.
〈( (x-y = z) ↔ (z+y = x) )〉
〈( (x' = y) ↔ (y' = x) )〉